Many computing systems, including networked computing systems, contain non-volatile storage devices configured with memory for storing data and other information. These computer systems may be used to execute a variety of different applications. In addition, resources for network computing and storage are often provided by computing resource providers who leverage large-scale networks of computers, servers and storage drives to enable clients, including content providers, online merchants and the like, to host and execute a variety of applications and web services. Applications executing on these and other computer systems may frequently increment values stored in non-volatile storage. This may be a common operation in many sequential and transactional processing applications, such as a database or queue manager. These applications may increment values frequently or even as part of every operation to maintain data consistency.
Performing these may be operationally expensive for certain types of non-volatile storage devices. For example, in many storage devices, the substrate used for data storage and the controller used for data storage are configured such that flipping bits (i.e., changing their state from zero to one (also referred to as “off” or “on”) or vice versa) is slower and operationally more complex in one direction than in the other. In some examples, flipping a bit in one direction requires caching data around the bit, clearing the data around the bit, and rewriting the data around the bit such that the result reflects the flipped bit. Flipping in the other direction, however, may not require such operations and often the bit may be flipped without affecting the surrounding bits. As a result, similar data operations (e.g., updating a stored value) can have highly variable performance characteristics depending on how the corresponding bits are flipped during such operations.